home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / rbbs / rbbs_mpl.zip / MBS50705.MRG < prev    next >
Text File  |  1992-07-05  |  68KB  |  1,837 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB5.BAS to produce E:\RBBS\CHAT\RBBSSUB5.BAS
  3. * E:\RBBS\STOCK\RBBSSUB5.BAS:  Date 6-20-1992  Size 116575 bytes
  4. * ------------[ Created 07-05-1992 07:16:32 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB5.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB5.BAS
  10. '  First Released .....: June 21, 1992
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1992
  13. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  14. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  15. '     require error trapping are incorporated within RBBSSUB 2-5 as
  16. '     separately callable subroutines in order to free up as much
  17. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  18. '  Parameters..........: Most parameters are passed via a COMMON statement.
  19. '
  20. ' Subroutine  Line               Function of Subroutine
  21. '   Name     Number
  22. '  AddLink        63620  Adds a conference link
  23. * ------[ first line different ]------
  24. '  AskItems       63610  Get an list of items
  25. '  BinSearch      63520  Binary searches sorted file for a key value
  26. '  BreakFileName  63300  Break file name into component parts
  27. '  BufAsUnit      63500  Buffer out a string with CR's
  28. '  ChangeInit     63590  Get an integer value
  29. '  ChkAddedTime   63056  Check whether ok to extend time remaining
  30. '  ChkIfMsgHeader 63550  Checks whether record is a msg header
  31. '  DeLink         63620  Removes conference from linked ones
  32. '  DoorReturn     63100  Process door requests
  33. '  FdMacExe       63462  Executes a found macro
  34. '  FileSystem     20117  File System for RBBS-PC
  35. '  FindIt         63490  Check whether file exists and if so open as #2
  36. '  FormRead       63420  Read from file into a form
  37. '  LockAppend     63400  Prepare for a file append
  38. '  MacroExe       63460  Execute internal macro rather than user
  39. '  MarkItems      63600  Convert list of items into a "mark"
  40. '  MsgNameMatch   63540  Match name to one in msg header
  41. '  NextConf       63615  Sets up join to next conference link
  42. '  NoPath         63480  Detects whether string has a path in it
  43. '  RestoreCom     63310  Restore comm port after external program
  44. '  ReadMacro      63330  Read and process macro
  45. '  ReadParms      63490  Read certain number of parameters from file 2
  46. '  ReportEcho     63635  Reports echo preference of caller
  47. '  SayWelcome     63640  Welcomes callers on logon
  48. '  SetPrivileges  63650  Sets user privileges based on PASSWRDS
  49. '  SetPrompt      63470  Set prompts based on the user's security
  50. '  SetSessionTime 63645  Sets the session time
  51. '  SetSysOp       63625  Determines whether remote or global SysOp
  52. '  SetUserFlag    63560  Sets specified user flag
  53. '  SetUserPref    63630  Sets user preferences based on user record
  54. '  ShellExit      63320  Exit RBBS via shell
  55. '  SrchPasswrds   63652  Searches the PASSWRDS file
  56. '  TakeOffHook    63530  Take modem off hook
  57. '  TStats         69600  Display transfer stats from XFER-? file     ' MplXfer
  58. '  UnLockAppend   63410  Clean up after file append
  59. '  UnMarkItems    63610  Convert marked items into an input list
  60. '  VerifyAns      63510  Verify that string passes edits
  61. '  WildCard       63200  Match string to a pattern
  62. '
  63. '  $INCLUDE: 'RBBS-VAR.BAS'
  64. '
  65. * REPLACING old line(s) by new
  66. 20117 ' $SUBTITLE: 'FileSystem -- subroutine for RBBS-PC's file system'
  67. ' $PAGE
  68. '
  69. ' NAME    -- FileSystem
  70. '
  71. ' INPUTS  --       PARAMETER                 MEANING
  72. '             ZFileSysParm = 1  LIST THE SYSOP'S COMMENTS FILE
  73. '                                 2  L)IST DIRECTORY COMMAND
  74. '                                 3  D)OWNLOAD COMMAND
  75. '                                 4  RETURN FROM EXTERNAL PROTOCOLS
  76. '                                 5  U)PLOAD COMMAND
  77. '                                 6  S)CAN DIRECTORY COMMAND
  78. '                                 7  P)ERSONAL FILES COMMAND
  79. '                                 8  N)EW FILES COMMAND
  80. '                                 9  RETURN FROM EXTENDED DESCRIPTION
  81. * ------[ first line different ]------
  82. '                                 10  Batch Upload files
  83. '
  84. ' OUTPUTS -- ZFileSysParm = 1  COMMAND PROCESSED SUCCESSFULLY
  85. '                                2  RECYCLE TO TOP OF RBBS-PC (202)
  86. '                                3  PROCESS NEXT COMMAND (1200)
  87. '                                4  DENY USER ACCESS (1380)
  88. '                                5  HANDLE EXTENDED DESCRIP. (2008)
  89. '                                6  USER'S TIME EXCEEDED (10553)
  90. '                                7  Carrier DROPPED (10595)
  91. '
  92. ' PURPOSE -- To handle the RBBS-PC file system commands
  93. '
  94.       SUB FileSystem STATIC
  95.       ZFF = ZFileSysParm
  96.       ZFileSysParm = 1
  97.       ZActiveFMSDir$ = ""
  98.       CALL SaveUserActivity("F", ZNodeRecIndex, ZFalse)              ' CHAT0813
  99.       ON ZFF GOSUB 20119, _  ' HANDLER TO LIST COMMENTS TO SYSOP
  100.                   20150, _  ' L)IST DIRECTORY COMMAND HANDLER
  101.                   20180, _  ' D)OWNLOAD COMMAND HANDLER
  102.                   20263, _  ' RETURN FROM EXTERNAL Protocol'S
  103.                   20400, _  ' U)PLOAD COMMAND HANDLER
  104.                   21800, _  ' S)CAN DIRECTORY COMMAND HANDLER
  105.                   21850, _  ' P)ERSONAL FILES COMMAND HANDLER
  106.                   21860, _  ' N)EW FILES COMMAND HANDLER
  107.                   20705, _  ' RETURN FROM EXTENDED DESCRIPTIONS
  108.                   20410     ' 4)Batch Upload files
  109.       GOTO 21920
  110. * REPLACING old line(s) by new
  111. 20150 ZListDir = ZTrue
  112.       ListNew = ZFalse
  113.       SearchDate$ = ""
  114.       SearchString$ = ""
  115.       WasRS$ = ""
  116.       ShowDirOfDir = (ZLastIndex <= ZAnsIndex) AND NOT ZExpertUser
  117.       WasCK = 0
  118.       ZSearchingAll = ZFalse
  119. * ------[ first line different ]------
  120.       ZExtendedOff = ZTrue   'Pe 10/27/91
  121. * REPLACING old line(s) by new
  122. * ------[ first line different ]------
  123. 20155 IF ZDnldCompleted AND ZAutoEnd = 1 THEN _   'Pe 02/05/90
  124.         ZFileSysParm = 7: _
  125.         RETURN
  126.  IF ListNew OR ZAnsIndex > 255 THEN _   'Pe 12/12/91
  127.          RETURN                         'Pe 12/12/91
  128.       CALL GetDirs (ZFalse)    'Pe 02/04/90
  129.       IF ZWasQ = 0 THEN _
  130.          RETURN
  131.       ShowDirOfDir = ZFalse
  132.       CALL ConvertDir (ZAnsIndex)
  133.       WasQX = ZLastIndex
  134. * REPLACING old line(s) by new
  135. 20159 IF ZAnsIndex < ZLastIndex THEN _
  136.          GOTO 20155
  137.       ZSearchingAll = ZFalse
  138.       CALL CmdStackPushPop (1)
  139.       ZLastIndex = 0
  140.       IF ZNo OR InFMS OR (ZFileNameHold$ = ZDirPrefix$) THEN _
  141.          GOTO 20155
  142.       GOSUB 20178
  143.       CALL QuickTPut (ZEmphasizeOff$,0)
  144.       ZTurboKey = - ZTurboKeyUser
  145. * ------[ first line different ]------
  146. ZOutTxt$ = "End list.  L)ist, T)ype, V)iew, M)ark, D)nld, [Q]uit"     'Pe 05/30/91
  147.       GOSUB 21667
  148.       CALL AraAllCaps (ZUserIn$(),1)
  149. '******************************* Pe 02/15/90 **********************
  150.      IF ZUserIn$(1) = "T"  AND _
  151.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  152.          ZAnsIndex = 1 : _   
  153.         CALL TypeFile : _
  154.        RETURN
  155.      IF ZUserIn$(1) = "V"  AND _
  156.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  157.          ZAnsIndex = 1 : _   
  158.         CALL GetArc : _
  159.        RETURN
  160. '******************************************************************
  161.       IF ZUserIn$(1) = "L" THEN _
  162.          ZUserIn$(ZAnsIndex) = WasA1$ : _
  163.         GOTO 20161
  164.       Temp$ = ZUserIn$(1)
  165.       Temp = (ZUserIn$(1) = "D")
  166.       CALL AskItems ("MD",Temp$,ZTrue,"file",ZMarkedFiles$)
  167.       IF ZWasQ = 0 OR ZUserSecLevel < ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  168.          GOTO 20160
  169.       IF Temp THEN _
  170.          GOSUB 20202 _
  171.       ELSE IF LEN(ZUserIn$(1)) > 1 THEN _
  172.          ZAnsIndex = 1 : _
  173.          GOSUB 20202
  174. * REPLACING old line(s) by new
  175. 20162 CALL CmdStackPushPop (1)         ' save dir list list processing
  176.       CALL FMS (ZWasZ$,SearchString$,SearchDate$,InFMS, _
  177.                 ZCategoryName$(),ZCategoryCode$(),ZCategoryDesc$(),_
  178.                 DnldFlag,CatFound,ZAnsIndex)
  179.       WHILE DnldFlag > 0 AND ZSubParm > -1
  180.          GOSUB 20202
  181.          IF ZFileSysParm > 1 THEN _
  182.             RETURN
  183. * ------[ first line different ]------
  184.         IF ZDnldCompleted and ZAutoEnd = 1 THEN _  'Pe 02/05/90
  185.            RETURN       ' AUTOLOGOFF MOD
  186.          WasX$ = ZCategoryCode$(CatFound)
  187.          CALL DispUpDir (WasX$,SearchString$,SearchDate$,DnldFlag,ZAnsIndex)
  188.          CALL CheckTimeRemain (MinsRemaining)
  189.          IF ZSubParm = -1 THEN _
  190.             ZFileSysParm = 6 : _
  191.             RETURN
  192.          CALL Carrier
  193.       WEND
  194.       IF ZSubParm = -1 THEN _
  195.          ZFileSysParm = 7 : _
  196.          RETURN
  197.       IF ZAnsIndex > 255 OR ZRet THEN _
  198.          ZLastIndex = 0 : _
  199.          RETURN
  200.       CALL CmdStackPushPop (2)        ' restore dir list list processing
  201.       ZActiveFMSDir$ = ""
  202.       IF InFMS THEN _
  203.          GOTO 20159
  204.       IF ZUserSecLevel < ZMinSecToView THEN _
  205.          IF ZFileNameHold$ = ZUpldDirCheck$ THEN _
  206.         ZOutTxt$ = "Listing of Upload Directory Available to SYSOP Only" : _ 'DGS-TXT
  207.         GOSUB 21640 : _                                           'DGS-TXT
  208.         ZNo = ZTrue : _                                           'DGS-TXT
  209.         GOTO 20155                                                'DGS-TXT
  210.       ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  211.       IF ZLimitSearchToFMS THEN _
  212.          GOTO 20166
  213.       IF NOT ZSearchingAll THEN _
  214.          IF ZFileNameHold$ = "ALL" OR ZFileNameHold$ = "A" THEN _
  215.             ZSearchingAll = ZTrue : _
  216.             GOSUB 21890 : _
  217.             GOTO 20157
  218.       CALL BadFile (ZFileNameHold$,BadFileNameIndex)
  219.       ON BadFileNameIndex GOTO 20163,20172,20176
  220. * REPLACING old line(s) by new
  221. 20166 ZFileName$ = ZCurDirPath$ + _
  222.                    ZFileNameHold$ + ".MNU"
  223. * ------[ first line different ]------
  224.       CALL FindIt (ZFileName$)
  225.       IF ZOK THEN _
  226.          CALL BufFile (ZFileName$,ZAnsIndex) : _
  227.          GOTO 20155
  228.       IF ZAltdirExtension$ = "" THEN _
  229.          GOTO 20172
  230.       ZFileName$ = ZCurDirPath$ + _
  231.                    ZFileNameHold$ + _
  232.                    "." + _
  233.                    ZAltdirExtension$
  234.       CALL Graphic (ZFileName$)
  235.       IF NOT ZOK THEN _
  236.          GOTO 20172
  237. * REPLACING old line(s) by new
  238. 20202 IF (ZTimeLock AND 2) AND (NOT TimeLockExempt) AND NOT ZHasPrivDoor THEN _
  239.          CALL TimeLock : _
  240.          IF NOT ZOK THEN _
  241.             RETURN
  242.       LastDnld = ZLastIndex
  243.       FirstDnld = ZAnsIndex
  244.       ZCmdTransfer$ = ""
  245. * ------[ first line different ]------
  246.       ZAnsIndex = ZLastIndex
  247.       GOSUB 20470
  248.       LastDnld = LastDnld + (WasX > 0)
  249.       BatchBytes# = 0
  250.       BatchBlocks# = 0
  251.       ZDownFiles = 0
  252.       CALL KillWork (ZNodeWorkFile$)
  253.       ZErrCode = 0
  254.       ZAnsIndex = FirstDnld
  255. * REPLACING old line(s) by new
  256. 20205 MarkingTime = (ZAnsIndex = FirstDnld OR NOT ZConcatFIles)
  257.       ZFileName$ = ZUserIn$(ZAnsIndex)
  258. * ------[ first line different ]------
  259.       CALL AllCaps(ZFileName$)              'ANSIEd
  260.       CALL Remove (ZFileName$,", ")
  261.       ZViolation$ = "Download "
  262.       IF ZListOnly THEN _
  263.          CALL BreakFileName (ZFileName$,DR$,ZWasY$,WasX$,ZTrue) : _
  264.          ZFileNameHold$ = ZWasY$ + _
  265.                            WasX$ : _
  266.          GOTO 20235
  267.       ZFileNameHold$ = ZFileName$
  268.       TmpFileNameHold$ = ZFileNameHold$                            'Pe 04/25/92
  269.       CALL BadFile (ZFileName$,BadFileNameIndex)
  270.       ON BadFileNameIndex GOTO 20220,20231,20233
  271. * INSERTING new line(s)
  272. 20210 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _      'Pe 06/01/92
  273.                       ((ZUserSecLevel < ZMinSecToView) OR _       'Pe 06/01/92
  274.                        NOT ZCanDnldFromUp),MarkingTime,"D")       'Pe 06/01/92
  275.        RETURN                                                     'Pe 06/01/92 
  276. * REPLACING old line(s) by new
  277. * ------[ first line different ]------
  278. 20220 IF INSTR(ZFileName$,ZDefaultExtension$)= 0 Then             'Pe 06/04/92
  279.       GOSUB 20210                                                 'Pe 06/02/92
  280.       IF ZOK THEN _                                               'Pe 06/02/92
  281.         GOTO 20235                                                'Pe 06/02/92
  282.       IF ZDotFlag THEN _                                          'Pe 06/02/92
  283.          RETURN                                                   'Pe 06/02/92
  284.      End if                                                       'Pe 06/04/92
  285.          WasI = 1                                                 'Pe 06/01/92
  286. * DELETING old line(s)
  287. 20222
  288. * REPLACING old line(s) by new
  289. * ------[ first line different ]------
  290. 20225 CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse) 'Pe 06/01/92
  291.         WasJ = INSTR(Mid$(ZCompressedExt$+". ",WasI),".")        'Pe 04/18/92
  292.        IF WasJ = 0 THEN _                                        'Pe 04/18/92
  293.           GOTO 20231                                             'Pe 06/04/92
  294.               Check$ = MID$(ZCompressedExt$,WasI,WasJ-1)         'Pe 04/28/92
  295.           WasI = WasI + WasJ                                     'Pe 04/18/92
  296.        ZFileName$ = WasX$ + "." + Check$                         'Pe 04/18/92
  297.       ZFileNameHold$ = ZFileName$                                'Pe 04/18/92
  298.      GOSUB 20210                                                 'Pe 06/01/92
  299.  IF ZOK THEN _                                                   'Pe 06/01/92
  300.        GOTO 20235                                                'Pe 06/01/92
  301.      IF ZDotFlag THEN _                                          'Pe 06/01/92
  302.         RETURN                                                   'Pe 06/01/92
  303.       GOTO 20225                                                 'Pe 06/01/92
  304. * REPLACING old line(s) by new
  305. * ------[ first line different ]------
  306. 20231 ZOutTxt$ = TmpFileNameHold$ + _                             'Pe 04/18/92
  307.            " not found!"
  308.       CALL UpdtCalr (ZOutTxt$,2)
  309.       ZOutTxt$ = ZOutTxt$ + _
  310.            " Correct name"+ZPressEnterExpert$
  311.       ZSuspendAutoLogoff = ZTrue
  312.       GOSUB 21660
  313.       ZSuspendAutoLogoff = ZFalse
  314.       IF ZFileSysParm > 1 THEN _
  315.          RETURN
  316.       IF ZWasQ=0 THEN _
  317.          IF ZBatchTransfer AND ZAnsIndex >= LastDnld THEN _
  318.             GOTO 20262 _
  319.          ELSE ZAutoLogOffReq = ZFalse : _
  320.               RETURN
  321.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  322.       GOTO 20205
  323. * REPLACING old line(s) by new
  324. 20236 ZLine25$ = "(D) " + _
  325.                  ZWasZ$
  326. * ------[ first line different ]------
  327. '
  328. ' *  TEST FOR DOWNLOAD SECURITY
  329. '
  330.       CALL OpenWork (2,ZFileSecFile$)
  331.       IF ZErrCode = 53 THEN _
  332.          CALL UpdtCalr ("Missing file " + ZFileSecFile$,2) : _
  333.          GOTO 20247
  334. * REPLACING old line(s) by new
  335. 20244 IF ZUserSecLevel < VAL(ZWorkAra$(2)) THEN _
  336.          GOTO 20245
  337.       FilePswd$ = ZWorkAra$(3)
  338.       IF FilePswd$ = "" THEN _
  339.          GOTO 20247
  340. * ------[ first line different ]------
  341.       CALL AraAllCaps (ZUserIn$(),1)
  342.       IF ZUserIn$(1) = FilePswd$ THEN _
  343.          GOTO 20247
  344.       ZOutTxt$ = "Enter PASSWORD to download " + _
  345.            ZFileName$
  346.       GOSUB 21660
  347.       IF ZFileSysParm > 1 THEN _
  348.          RETURN
  349.       IF ZWasQ = 0 THEN _
  350.          RETURN
  351.       CALL AllCaps (ZUserIn$(1))
  352.       IF ZUserIn$(1) = FilePswd$ THEN _
  353.          GOTO 20247
  354. * REPLACING old line(s) by new
  355. 20247 ZWasDF = 0
  356.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse)
  357. * ------[ first line different ]------
  358.  IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.ARJ.LZH.","."+Extension$+".") > 2 OR _
  359.          MID$(Extension$,2,1) = "Q" OR _
  360.          (ZRequireNonASCII AND Extension$ = "BAS") THEN _
  361.             ZWasDF = ZTrue
  362. * REPLACING old line(s) by new
  363. 20260 ZTransferFunction = 1
  364. * ------[ first line different ]------
  365.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  366.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  367.       GOSUB 21790
  368.       IF ZFileSysParm > 1 THEN _
  369.          RETURN
  370.          ZBatchTransfer = ZBatchProto                     'Pe Batch Mod
  371.       IF ZBatchTransfer AND ZCmdTransfer$ = "" THEN _
  372.          ZCmdTransfer$ = ZWasFT$
  373.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  374.          20340, _              ' ASCII DOWNLOAD
  375.          20290, _              ' Xmodem
  376.          20290, _              ' Xmodem CRC
  377.          20270, _              ' YMODEM
  378.          21700                 ' NONE - CANCEL
  379. '
  380. ' *  EXTERNAL Protocol Downloads/Uploads
  381. '
  382. * REPLACING old line(s) by new
  383. 20262 IF ZBatchTransfer THEN _
  384.          IF ZAnsIndex < LastDnld THEN _
  385.             RETURN _
  386.          ELSE ZBlocksInFile# = BatchBlocks# : _
  387.               ZBytesInFile# = BatchBytes# : _
  388.               ZNumDnldBytes! = BatchBytes# : _
  389.               IF ZBytesInFile# < 1 THEN _
  390.                  RETURN _
  391.               ELSE GOSUB 20780 : _
  392.                    IF ZFileSysParm > 1 OR NOT ZOK THEN _
  393.                       RETURN
  394. * ------[ first line different ]------
  395.          IF ZAbort THEN _
  396.             ZAbort = ZFalse : _              'Pe 01/26/92
  397.             ZDnldCompleted = ZFalse : _
  398.             GOSUB 21760 : _
  399.             RETURN
  400.       GOSUB 20337
  401.       CALL Transfer
  402. * REPLACING old line(s) by new
  403. 20263 IF ZPrivateDoor THEN _
  404.          ZCmdTransfer$ = ZWasFT$ : _
  405.          CALL XferType (2,ZTrue) : _
  406.          ZCmdTransfer$ = ""
  407.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")
  408.       IF ZErrCode <> 0 THEN _
  409.          GOTO 20267
  410.       CALL ReadParms (ZWorkAra$(), ZFailureParm, 1)
  411. * ------[ first line different ]------
  412.  
  413.       IF ZErrCode <> 0 THEN _
  414.          GOTO 20267
  415.       CLOSE 2
  416.       IF NOT ZFakeXRpt THEN _                  'Pe 03/26/92
  417.         Call TStats                            'Pe 03/26/92
  418.       CALL KillWork ("XFER-" + ZNodeID$ + ".DEF")
  419. * REPLACING old line(s) by new
  420. 20265 IF ZTransferFunction = 2 THEN _
  421.          IF INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1 THEN _
  422.             GOTO 20700 _
  423.          ELSE GOTO 20730
  424.       IF ZTransferFunction = 1 THEN _
  425. * ------[ first line different ]------
  426.         ZDnldCompleted = (INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1)  'Pe 05/30/91
  427.       GOSUB 21760
  428.       CALL Carrier
  429.       IF ZSubParm = -1 THEN _
  430.          ZFileSysParm = 7
  431.       RETURN
  432. '
  433. ' *  XFER FILE NOT Found
  434. '
  435. * REPLACING old line(s) by new
  436. * ------[ first line different ]------
  437. 20292 Call QuickTput1 (" Sorry NO internal Protocols available ") : _
  438.       Call Delaytime (3) : _
  439.       Return
  440. * DELETING old line(s)
  441. 20294
  442. * DELETING old line(s)
  443. 20325
  444. * REPLACING old line(s) by new
  445. * ------[ first line different ]------
  446. 20330 GOSUB 20337
  447.       ZOutTxt$ = ZProtoPrompt$ + _
  448.             " " + WasA1$ + _
  449.             " of " + _
  450.             ZFileNameHold$ + _
  451.             " ready.  <Ctrl X> aborts"
  452.       GOSUB 21650
  453.       RETURN
  454. * DELETING old line(s)
  455. 20335
  456. * REPLACING old line(s) by new
  457. 20340 IF ZWasDF THEN _
  458.          ZOutTxt$ = "Switch to a non-ascii protocol" : _
  459.          GOSUB 21650 : _
  460.          GOTO 21700
  461.       GOSUB 20750
  462.       IF ZFileSysParm > 1 OR NOT ZOK THEN _
  463.          RETURN
  464.       CALL OpenWork (2,ZFileName$)
  465.       IF (ZAnsIndex = FirstDnld OR NOT ZConcatFIles) THEN _
  466.          GOSUB 20337 : _
  467.          ZOutTxt$ = "^X aborts.  ^S suspends ^Q resumes" : _
  468.          GOSUB 21640 : _
  469.          IF ZFileSysParm > 1 THEN _
  470.             RETURN _
  471.          ELSE ZOutTxt$ = ZProtoPrompt$ + " SEND of " + _
  472.               ZFileNameHold$ + _
  473.               " ready. Press Any Key to start" : _
  474.          ZTurboKey = 2 : _
  475.          ZForceKeyboard = ZTrue : _
  476.          ZSuspendAutologoff = ZTrue : _
  477.          GOSUB 21660 : _
  478.          ZSuspendAutologoff = ZFalse : _
  479. * ------[ first line different ]------
  480.          IF ZFileSysParm > 1 THEN _
  481.             RETURN
  482. * REPLACING old line(s) by new
  483. 20380 ZStopInterrupts = ZFalse
  484.       WasTU = 0
  485.       SWAP WasTU,ZPageLength
  486.       CALL BufFile (ZFileName$,WasX)
  487.       SWAP WasTU,ZPageLength
  488.       ZNonStop = (ZPageLength < 1)
  489.       IF StopFile THEN _
  490. * ------[ first line different ]------
  491.          ZDnldCompleted = ZFalse : _   'Pe 05/29/91
  492.          GOTO 20390
  493. * REPLACING old line(s) by new
  494. 20385 ZDnldCompleted = ZTrue   'Pe 05/30/91
  495. * REPLACING old line(s) by new
  496. 20400 CALL TimeBack (1)
  497. * ------[ first line different ]------
  498.       ZUpBatchTransfer = ZFalse     'Pe 12/08/91
  499.       ZWasBatchTransfer = ZFalse
  500.       GOSUB 20420
  501.       ZAutoLogOffReq = 0
  502.       FirstUpld = ZAnsIndex
  503.       GOTO 20430
  504. * INSERTING new line(s)
  505. 20410 CALL TimeBack (1)
  506.       CALL KillWork (ZBatchWorkFile$)                 'Pe Batchup mod 
  507.       ZErrCode = 0
  508.       ZUpBatchTransfer = ZTrue
  509.       Call Killwork ("BatchUp" +ZNodeID$ +".LST")
  510.       ZErrCode = 0
  511.       ZAutoLogOffReq = 0
  512. '
  513. ' changes for 12/28/91
  514. '
  515. If LEN(ZUserIn$) < 3 Then _
  516.       CALL Batchit : _
  517.       FirstUpld = 2 : _
  518.       LastUpld = ZLastIndex : _
  519.       GOTO 20430
  520.      FirstUpld = ZAnsIndex
  521.     Goto 20430
  522.  
  523. * REPLACING old line(s) by new
  524. 20432 FOR ZAnsIndex = FirstUpld TO LastUpld
  525.          IndexSave = ZAnsIndex
  526.          GOSUB 20471
  527.          GOSUB 20435
  528.          FirstUpld = FirstUpld + 1
  529.          IF ZFileSysParm > 1 THEN _
  530.             IndexSave = LastUpld + 1
  531.          ZAnsIndex = IndexSave
  532. * ------[ first line different ]------
  533.      NEXT
  534.     ZCmdTransfer$ = ""
  535.       RETURN
  536. * REPLACING old line(s) by new
  537. 20435 ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  538.       ExtSrch = ZFalse
  539.       IF INSTR(ZFileNameHold$,".") = 0 THEN _
  540.          ZFileNameHold$ = ZFileNameHold$ + "." + ZDefaultExtension$
  541.       CALL AllCaps(ZFileNameHold$)
  542.       ZFileName$ = ZFileNameHold$
  543.       ZViolation$ = "Upload "
  544.       CALL NoPath (ZFileName$,BadFileNameIndex)
  545.       IF BadFileNameIndex THEN _
  546.          GOTO 20451
  547.       CALL BadFile (ZFileName$,BadFileNameIndex)
  548.       ON BadFileNameIndex GOTO 20440,20451,20515
  549. * ------[ first line different ]------
  550. '
  551. ' Following mod was orig from DGS-UNW mod....updated for Maple code 12/15/91
  552. * REPLACING old line(s) by new
  553. * ------[ first line different ]------
  554. 20440 TmpName$ = ZDirPath$+"NOTHANX.DEF"                         'Pe 06/01/92
  555.       CALL FindIt (TmpName$)                                        'DGS-UNW
  556.       IF ZOK THEN
  557.        CALL QuickTPut1 ("Checking to see if "+ZFileNameHold$ + " is in a list of Un-Wanted Files...")
  558.         CALL OpenWork (2,TmpName$)
  559.          HaveFile$ = ""
  560.           FileInList = ZFalse
  561.             WHILE NOT EOF(2) AND NOT FileInList
  562.          INPUT #2, HaveFile$
  563.         CALL AllCaps (HaveFile$)
  564.           FileInList = (INSTR(ZFileNameHold$,HaveFile$) > 0)
  565.      WEND
  566.        CLOSE 2
  567.       END IF
  568.      IF FileInList THEN _
  569.     GOTO 20443
  570. '
  571. ' If you want to eliminate either one of these routines just comment
  572. ' out the one you don't want....NOTHANX.DEF must reside in RBBS's Subdir
  573. ' the OFFLINE.DIR were your Master FMS dir is kept....you can change names
  574. ' as you see fit. 
  575. '                  !!DO NOT COMMENT OUT THE LINE NUMBER !!
  576. '
  577.  TmpName$ = ZDirPath$+"OFFLINE.DIR"                            'PE mode2 to
  578.        CALL FindIt (TmpName$)                                        'DGS-UNW
  579.         IF ZOK THEN
  580.           CALL QuickTPut1 ("Checking OFFLINE file list for "+ZFileNameHold$ )
  581.            CALL OpenWork (2,TmpName$)
  582.             HaveFile$ = ""
  583.              FileInList = ZFalse
  584.                WHILE NOT EOF(2) AND NOT FileInList
  585.                 LINE INPUT #2, HaveFile$                     'Pe 12/15/91
  586.                  CALL AllCaps (HaveFile$)
  587.                   StopReading = INSTR(HaveFile$,".")
  588.                    HaveFile$ = Left$(HaveFile$,StopReading)    'Pe 12/16/91
  589.                   Search = INSTR(ZFileNameHold$,".")
  590.                   Search$ = Left$(ZFileNameHold$,Search)
  591.                  If Search$ = HaveFile$ THEN_
  592.                 FileInList = ZTrue
  593.              WEND
  594.       CLOSE 2
  595.         END IF
  596. '
  597. '    next 2 lines
  598. '    Allow Sysop to update FMS listing with a local upload
  599. '    even if the filename exists in the NOTHANX.DEF OR OFFLINE.DIR
  600. '
  601. * INSERTING new line(s)
  602. 20443   If ZSysop Then _
  603.             FileinList = ZFalse            'Pe 12/15/91
  604.         IF FileInList THEN _
  605.            CALL BufFile (ZHelpPath$+"NOTHANX.MSG",WasX) : _  'Pe 06/01/92
  606.            CALL DelayTime (3) : _
  607.            GOTO 20453
  608.         CALL Carrier
  609.         IF ZSubParm = -1 THEN _
  610.            ZFileSysParm = 7 : _
  611.            RETURN
  612.       PersFile$ = ZFileName$                                     'Pe 08/09/91
  613.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  614.       Call FindFile (ZFileName$,ZOK)                             'Pe 08/09/91
  615.       IF ZOK THEN Goto 20452                                     'Pe 08/09/91
  616.       ZFileName$ = PersFile$                                     'Pe 08/09/91
  617.       CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,"U")
  618. * REPLACING old line(s) by new
  619. 20450 IF Extension$ <> Check$ THEN _
  620. * ------[ first line different ]------
  621.       CALL RotorsDir (WasX$ + "." + Check$,ZSubDir$(),ZSubDirCount,ZTrue,"U") : _
  622.          IF ZOK THEN _
  623.             ExtSrch = ZTrue : _
  624.             GOTO 20452
  625.       GOTO 20447
  626. * REPLACING old line(s) by new
  627. 20454 CALL QuickTPut1 ("Thanks, but we already have " + ZFileNameHold$)
  628. * ------[ first line different ]------
  629.       CALL DelayTime (3)  'Pe 08/04/91
  630.       PersFile$ = ""      'Pe 08/08/91
  631.       CALL UpdtCalr ("Upload duplicate " + ZFileNameHold$,1)
  632.       RETURN
  633. * REPLACING old line(s) by new
  634. 20455 ZOutTxt$ = "Add new directory entry (Y,[N])"
  635.       ZTurboKey = - ZTurboKeyUser
  636.       GOSUB 21660
  637.       IF ZFileSysParm > 1 THEN _
  638.          RETURN
  639.       IF NOT ZYes THEN _
  640.          RETURN
  641.       GOSUB 20460
  642.       IF WhoTo$ = "" THEN _
  643.          RETURN
  644.       AddingDescOnly = ZTrue
  645. * ------[ first line different ]------
  646.       ZWasBatchTransfer = ZFalse    'Pe 01/03/92
  647.       ZWasFT$ = "l"
  648. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1) 'UPL-MOD pe082690
  649. 'Call AutoLogoff    'Pe 10/20/91 Test mod... remove when working
  650.       GOSUB 20702
  651.       RETURN
  652. * REPLACING old line(s) by new
  653. * ------[ first line different ]------
  654. 20460 CALL KillWork (ZNodeWorkFile$)      'Pe BatchUp
  655.       WhoTo$ = ""
  656.      IF ZUpBatchTransfer THEN _          'Pe 04/29/92
  657.       WhoTo$ = "ALL"                     'Pe 04/29/92
  658.       WasY$ = ZFileName$
  659.       IF ZUserSecLevel >= ZMinSecPersUpld THEN _
  660.          CALL SetWhoTo (ZTrue,WhoTo$,"",RcvrRecNum,Found) _
  661.       ELSE WhoTo$ = "ALL"
  662.       ZFileName$ = WasY$
  663.       RETURN
  664. * REPLACING old line(s) by new
  665. 20471 ZWasZ$ = ZUserIn$(ZAnsIndex)
  666.       CALL AllCaps(ZWasZ$)
  667.       WasX = 0
  668.       IF LEN (ZWasZ$) = 1 THEN _
  669.          WasX = INSTR(ZDefaultXfer$,ZWasZ$) : _
  670.          IF WasX > 0 THEN _
  671.             ZAnsIndex = ZAnsIndex + 1 : _
  672.             IndexSave = IndexSave + 1 : _
  673.             ZCmdTransfer$ = ZWasZ$ : _
  674. * ------[ first line different ]------
  675.             IF MID$(ZInternalEquiv$,WasX,1) = "N" THEN _
  676.                ZCmdTransfer$ = ""
  677.       RETURN
  678. * REPLACING old line(s) by new
  679. 20475 ZWasZ$ = ZUpldDriveFile$
  680.       CALL FindFree
  681.       IF VAL(ZFreeSpace$) < 4096 THEN _
  682.          GOSUB 21895 : _
  683.          IndexSave = ZLastIndex + 1 : _
  684.          RETURN
  685.       ZOutTxt$ = "Upload disk has" + _
  686.            ZFreeSpace$
  687.       GOSUB 21640
  688.       IF ZFileSysParm > 1 THEN _
  689.          RETURN
  690. * ------[ first line different ]------
  691.     GOSUB 20460                                                  'Pe 08/08/91
  692.       If ZMplPersUpload = ZTrue Then _                           'Pe 08/09/91
  693.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  694. '*****************
  695. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1)  '<++++++
  696. '*****************
  697. * INSERTING new line(s)
  698. 20476 IF ZAbort THEN _     'Pe 09/07/91 added line number
  699.       ZAbort = ZFalse : _   'PE 12/14/88
  700.         RETURN
  701.       ZLine25$ = "(U) " + _
  702.                  ZFileNameHold$
  703.       ZSubParm = 2
  704.       CALL Line25
  705.       ZOutTxt$ = ""
  706.       ZOK = ZTrue
  707. * REPLACING old line(s) by new
  708. * ------[ first line different ]------
  709. 20500  ZTransferFunction = 2
  710.       GOSUB 21790
  711.       IF ZFileSysParm > 1 THEN _
  712.          RETURN
  713.       IF ZInternalProt$ = "N" THEN _                       'Pe 08/08/91
  714.          GOTO 21700                                        'Pe 08/08/91
  715. IF NOT ZUpBatchTransfer THEN _
  716. CALL AutoLogOff            'Pe 02/04/90
  717.       IF ZAutoEnd = 2 THEN _
  718.          RETURN
  719.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  720.          20560, _         ' ASCII UPLOAD
  721.          20542, _         ' Xmodem
  722.          20542, _         ' Xmodem CRC
  723.          20542, _         ' YMODEM
  724.          20735            ' NONE - CANCEL
  725.       GOTO 20261
  726. * REPLACING old line(s) by new
  727. * ------[ first line different ]------
  728. 20542 Call QuickTput1 ("Sorry NO Internal Protocols avaialble ") : _
  729.       Call Delaytime (3) : _
  730.       Return
  731. '
  732. ' *  ASCII UPLOAD
  733. '
  734. * REPLACING old line(s) by new
  735. 20700 GOSUB 21780
  736.       IF ZFileSysParm > 1 THEN _
  737.          RETURN
  738. * ------[ first line different ]------
  739. '
  740. '20702 IF ZWasFT$ = "l" THEN _          'Pe 12/28/91
  741. '         ZWasBatchTransfer = ZFalse    'Pe 12/28/91
  742. '
  743. 'Line number moved for Local Uploads    'Pe 01/03/91
  744. '
  745.       IF ZWasBatchTransfer Then _
  746.         CALL BatchUpload (ZDesc$,ZUCat$,2) : _
  747.         GOTO 20703
  748. * REPLACING old line(s) by new
  749. * ------[ first line different ]------
  750. 20702 CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) 'Pe 02/03/90
  751. '
  752. * INSERTING new line(s)
  753. 20703 IF ZAutoEnd = 1 THEN _                'AUTO-UP MOD
  754.          ZFileSysParm = 7: _             'Pe BatchUp 09/12/91
  755.          ZDnldCompleted = ZTrue : _      'Pe BatchUp 09/12/91
  756.          RETURN                             'AUTO-UP MOD
  757.       IF NOT ZGetExtDesc THEN _
  758.          ZPrivateDoor = ZFalse : _
  759.          GOTO 20710
  760.       ZMsgHeader$ = "Extended Description for " + ZFileNameHold$
  761.       ZSysopComment = ZTrue
  762.       ZMaxMsgLines = ZMaxExtendedLines
  763.       WasLL = ZRightMargin
  764.       ZRightMargin = 30 + ZMaxDescLen
  765.       IF ZRightMargin > 74 THEN _
  766.          ZRightMargin = 74
  767.       ZFileSysParm = 5
  768.       RETURN
  769. * REPLACING old line(s) by new
  770. 20705 ZMaxMsgLines = ZMaxMsgLinesDef
  771.       ZRightMargin = WasLL
  772. * ------[ first line different ]------
  773.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,3)  'Pe 02/04/90
  774. * REPLACING old line(s) by new
  775. 20730 GOSUB 21780
  776.       CALL QuickTPut1 ("Upload aborted")
  777. * ------[ first line different ]------
  778.       ZAutoLogoffReq = ZFalse                'Pe 10/20/91
  779.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  780.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  781.       LastUpld = 0
  782.       ZPrivateDoor = ZFalse
  783. * REPLACING old line(s) by new
  784. 20735 CALL KillWork (ZFileName$)
  785. * ------[ first line different ]------
  786.       IF ZErrCode <> 0 THEN _
  787.          ZWasEL = 20736 : _
  788.          GOTO 21900
  789.       ZAnsIndex = ZLastIndex + 1
  790.       IndexSave = ZAnsIndex
  791.       ZLastIndex = 0
  792.       RETURN
  793. '
  794. ' *  Sysop ABORTED UPLOAD
  795. '
  796. * REPLACING old line(s) by new
  797. 20791 CALL CheckTimeRemain (MinsRemaining)
  798.       IF ZSubParm = -1 THEN _
  799.          ZFileSysParm = 6 : _
  800.          RETURN
  801.       ZOK = ZTrue
  802.       Temp = ZExtraDnldTime
  803.       CALL ChkAddedTime (Temp)
  804.       Temp = MinsRemaining + Temp
  805.       ZWasA = INT(ZBlocksInFile# / 60) + 1
  806.       IF ZWasA <= Temp THEN _
  807.          GOTO 20793
  808. * ------[ first line different ]------
  809.       IF ZDownFiles < 2 THEN _
  810.          CALL AllCaps (ZFileNameHold$) : _
  811.          ZOutTxt$ = ZFileNameHold$ + " Not enough minutes left!  Need" _
  812.                  + STR$(ZWasA) + "  have" + STR$(Temp) : _
  813.          CALL UpdtCalr (ZOutTxt$,2) : _
  814.          CALL QuickTPut1 (ZOutTxt$) _
  815.       ELSE CALL OpenWork (2,ZNodeWorkFile$) : _
  816.            WHILE NOT EOF(2) : _
  817.               CALL ReadDir (2,1) : _
  818.               CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue): _
  819.               ZFileName$ = ZWasY$ + WasX$ : _
  820.               ZOutTxt$ = ZFileName$ + " Not enough minutes left!  Need" _
  821.                          + STR$(ZWasA) + "  have" + STR$(Temp) : _
  822.               CALL UpdtCalr (ZOutTxt$,2) : _
  823.            WEND : _
  824.            CLOSE 2 : _
  825.            ZOutTxt$ = "Not enough minutes left!  Need"  _
  826.                        + STR$(ZWasA) + "  have" + STR$(Temp) : _
  827.            CALL QuickTPut1 (ZOutTxt$)
  828.       CALL DelayTime (3)
  829.       IF ZDownFiles < 2 THEN _
  830.          GOTO 20792
  831.       ZLastIndex = 0
  832.       ZOutTxt$ = "Edit files to download ([Y],N)"
  833.       ZTurboKey = - ZTurboKeyUser
  834.       GOSUB 21668
  835.       IF ZNo THEN _
  836.          LastDnld = 0 : _
  837.          GOTO 20792
  838.       Temp = 0
  839.       CALL OpenWork (2,ZNodeWorkFile$)
  840.       WHILE NOT EOF(2)
  841.          CALL ReadDir (2,1)
  842.          CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue)
  843.          ZFileName$ = ZWasY$ + WasX$
  844.          ZOutTxt$ = "Download " + ZFileName$ + " (Y,[N])"
  845.          ZTurboKey = - ZTurboKeyUser
  846.          GOSUB 21668
  847.          IF ZYes THEN _
  848.             Temp = Temp + 1 : _
  849.             ZOutTxt$(Temp) = ZFileName$
  850.       WEND
  851.       CLOSE 2
  852.       ZAnsIndex = 1
  853.       ReStart = (Temp > 0)
  854.       LastDnld = Temp
  855.       ZLastIndex = Temp
  856.       FOR WasX = 1 TO Temp
  857.          ZUserIn$(WasX) = ZOutTxt$(WasX)
  858.       NEXT
  859. * REPLACING old line(s) by new
  860. 20793 IF ZRatioRestrict# > 0 THEN _
  861.          CALL QuickTPut1 ("New statistics will be") : _
  862.          CALL CheckRatio (ZTrue)
  863. * ------[ first line different ]------
  864.       CALL AutoLogoff
  865.       IF ZAutoEnd = 2 THEN _
  866.       ZOK = ZFalse
  867.       RETURN
  868. * REPLACING old line(s) by new
  869. 20851 ZWasY$ = ""
  870.       CALL CheckCarrier
  871.       IF ZSubParm = -1 THEN _
  872.          ZFileSysParm = 7 : _
  873.          RETURN
  874.       RETURN
  875. '
  876. * ------[ first line different ]------
  877. ' *  CHANGE TO 8 BIT FOR Xmodem
  878. '
  879. * DELETING old line(s)
  880. 20860
  881. 20900
  882. 20903
  883. 20920
  884. 20922
  885. 20930
  886. 20960
  887. 20970
  888. 20990
  889. * REPLACING old line(s) by new
  890. 20996 WasSO = 0
  891.       RETURN
  892. '
  893. * ------[ first line different ]------
  894. ' STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL OUTPUT ROUTINE
  895. '
  896. ' Modeled on lines 12975 to 12983 in RBBS-PC.BAS
  897. * DELETING old line(s)
  898. 20999
  899. 21000
  900. 21020
  901. 21040
  902. 21050
  903. 21060
  904. 21070
  905. 21080
  906. 21090
  907. 21100
  908. 21110
  909. 21113
  910. 21120
  911. 21131
  912. 21145
  913. 21150
  914. 21170
  915. 21180
  916. 21190
  917. 21191
  918. 21200
  919. 21210
  920. 21212
  921. 21220
  922. 21225
  923. 21230
  924. 21240
  925. 21250
  926. 21280
  927. 21281
  928. 21300
  929. 21303
  930. 21350
  931. 21360
  932. 21380
  933. 21390
  934. 21410
  935. 21415
  936. 21420
  937. 21440
  938. 21443
  939. 21445
  940. 21450
  941. 21455
  942. 21460
  943. 21470
  944. 21480
  945. 21490
  946. 21503
  947. 21504
  948. 21510
  949. 21530
  950. 21531
  951. 21540
  952. 21545
  953. 21550
  954. 21560
  955. 21561
  956. * REPLACING old line(s) by new
  957. 21720 CALL LPrnt (WasD$,NumReturns)
  958.       RETURN
  959. '
  960. * ------[ first line different ]------
  961. ' * UPDATE DOWNLOAD STATISTICS
  962. '
  963. '  (formerly lines 50600 to 50614 in RBBS-PC.BAS
  964. * DELETING old line(s)
  965. 21750
  966. * REPLACING old line(s) by new
  967. 21760 GOSUB 21780
  968.       IF ZFileSysParm > 1 THEN _
  969.          RETURN
  970.       IF ZBatchTransfer THEN _
  971.          CALL LinesInFile (ZNodeWorkFile$,ZDownFiles) _
  972.       ELSE ZDownFiles = 1
  973. * ------[ first line different ]------
  974.       IF NOT ZDnldCompleted THEN _     'Pe 05/31/91
  975.          ZAutoLogoffReq = ZFalse : _
  976.          ZWasDF$ = " Aborted" : _
  977.          GOTO 21770
  978.       CALL LogPDown (ZPersonalDnld,1+ZAnsIndex-FirstDnld)
  979.       WasX = ((ZRatioRestrict# > 0) AND ZEnforceRatios AND ZFreeDnld)
  980.       IF NOT WasX THEN _
  981.          ZDnlds = ZDnlds + ZDownFiles : _
  982.          ZGlobalDLToday! = ZGlobalDLToday! + ZDownFiles : _
  983.          ZGlobalDnlds = ZGlobalDnlds + ZDownFiles : _
  984.          ZDLBytes! = ZDLBytes! + ZNumDnldBytes! : _
  985.          ZGlobalDLBytes! = ZGlobalDLBytes! + ZNumDnldBytes! : _
  986.          ZDLToday! = ZDLToday! + ZDownFiles : _
  987.          ZBytesToday! = ZBytesToday! + ZNumDnldBytes! : _
  988.          ZGlobalBytesToday! = ZGlobalBytesToday! + ZNumDnldBytes!
  989.       ZNumDnldBytes! = 0
  990.       ZWasDF$ = " Downloaded"
  991.       IF (ZAnsIndex = LastDnld OR NOT ZConcatFIles) THEN _
  992.          CALL SkipLine (1) : _
  993.          CALL QuickTPut1 ("Download successful")
  994.          IF WasX THEN _
  995.             CALL QuickTPut1 ("but not counted against ratios")
  996. * DELETING old line(s)
  997. 21768
  998. * REPLACING old line(s) by new
  999. * ------[ first line different ]------
  1000. 21773 IF ZTransferFunction = 1 THEN
  1001.      CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZTrue)
  1002.       ZWasZ$ = WasX$ + _
  1003.            Extension$ + _
  1004.            ZWasDF$ + _
  1005.            " at " + _
  1006.            ZTime$ + _
  1007.            " using " + _
  1008.            ZWasFT$ + _
  1009.            STR$(ZBytesInFile#)
  1010.       CALL UpdtCalr (ZWasZ$,2)
  1011.    END IF
  1012.       IF ZBatchTransfer THEN _
  1013.          ZWasQ = ZWasQ - 1 : _
  1014.          GOTO 21772
  1015.       'CALL CheckRatio (ZFalse)
  1016. * REPLACING old line(s) by new
  1017. * ------[ first line different ]------
  1018. 21774  RETURN
  1019. '
  1020. '
  1021. ' *****   TURN ON INTERMEDIATE ECHO   ****
  1022. '
  1023. '  (formerly line 50620 in RBBS-PC.BAS
  1024. * REPLACING old line(s) by new
  1025. * ------[ first line different ]------
  1026. 21790  Call CheckCarrier                  'Pe 12/31/91
  1027.       IF ZSubParm = -1 THEN _             'Pe 12/31/91
  1028.          ZFileSysParm = 7 : _             'Pe 12/31/91
  1029.        Return                             'Pe 12/31/91
  1030.        IF ZEchoer$ = "I" THEN _
  1031.          CALL SetEcho ("R")
  1032.       RETURN
  1033. '
  1034. ' *****   DIRECTORY SEARCH   ****
  1035. '
  1036. '  (formerly lines 52900 to 52920 in RBBS-PC.BAS
  1037. * REPLACING old line(s) by new
  1038. 21820 WasRS$ = ZUserIn$(ZAnsIndex)
  1039.       WildSearch = (INSTR(WasRS$,"*") > 0 OR INSTR(WasRS$,"?") > 0)
  1040.       CALL AllCaps (WasRS$)
  1041.       IF RIGHT$(WasRS$,1) = "*" THEN _
  1042.          IF RIGHT$(WasRS$,2) <> ".*" THEN _
  1043.             WasRS$ = WasRS$ + ".*"
  1044.       SearchString$ = WasRS$
  1045.       SearchDate$ = ""
  1046.       ZJumpSearching = ZFalse
  1047.       WasA1$ = WasRS$
  1048. * ------[ first line different ]------
  1049.       ZExtendedOff = ZTrue       'Pe 10/27/91
  1050.       GOTO 21867
  1051. '
  1052. ' *****  P - personal download  ****
  1053. '
  1054. '  (formerly lines 52950 to 52952 in RBBS-PC.BAS
  1055. * REPLACING old line(s) by new
  1056. * ------[ first line different ]------
  1057. 21854 RETURN
  1058. '
  1059. ' *  WasN - COMMAND FROM FILES MENU (DISPLAY NEW FILES SINCE Last DIR DISPLAY)
  1060. '
  1061. '  (formerly lines 53000 to 53070 in RBBS-PC.BAS
  1062. * REPLACING old line(s) by new
  1063. 21866 SearchDate$ = WasRS$
  1064.       SearchString$ = ""
  1065.       ZJumpSearching = ZFalse
  1066. * ------[ first line different ]------
  1067.       ZExtendedOff = ZTrue             'Pe 10/27/91
  1068.       ZUserIn$(ZAnsIndex) = "A"
  1069.        ZEndList = ZTrue          'Pe 12/01/91
  1070.        GOTO 21871                'Pe NewFile mod
  1071. * REPLACING old line(s) by new
  1072. * ------[ first line different ]------
  1073. 21867 CALL GetDirs (ZFalse)
  1074.       IF ZWasQ = 0 THEN _
  1075.          RETURN
  1076. * REPLACING old line(s) by new
  1077. 21880 WasQX = ZAnsIndex
  1078.       GOSUB 20157
  1079.       IF ZFileSysParm > 1 THEN _
  1080.          RETURN
  1081.       ZAnsIndex = ZAnsIndex + 1
  1082.       IF ZAnsIndex <= ZLastIndex THEN _
  1083.          GOTO 21875
  1084.       ListNew = ZFalse
  1085. * ------[ first line different ]------
  1086.       ZEndList = ZFalse       'Pe 12/01/91
  1087.       SearchString$ = ""
  1088.       SearchDate$ = ""
  1089.       RETURN
  1090. * REPLACING old line(s) by new
  1091. 21900 IF ZDebug THEN _
  1092.          ZOutTxt$ = "RBBSSUB5 DEBUG Error Trap Entry ERL=" + _
  1093.               STR$(ZWasEL) + _
  1094.               " ERR=" + _
  1095.               STR$(ZErrCode) : _
  1096.          IF ZPrinter THEN _
  1097.             CALL Printit(ZOutTxt$) _
  1098.          ELSE CALL LPrnt(ZOutTxt$,1)
  1099.       IF ZWasEL = 20126 AND ZErrCode = 53 THEN _
  1100.          GOTO 20142
  1101.       IF ZWasEL = 20242 AND ZErrCode = 62 THEN _
  1102.          CALL UpdtCalr (ZFileSecFile$ + " bad format!",2) : _
  1103.          GOTO 20247
  1104.       IF ZWasEL = 20263 THEN _
  1105.          ZOutTxt$ = "<Download aborted>" : _
  1106. * ------[ first line different ]------
  1107.          ZDnldCompleted = ZFalse : _          'Pe
  1108.          GOTO 20390
  1109.       IF ZWasEL = 20560 AND ZErrCode = 67 THEN _
  1110.          GOTO 20451
  1111.       IF ZWasEL = 20560 AND ZErrCode = 70 THEN _
  1112.          IF VAL(ZFreeSpace$) > 1999 THEN _
  1113.             GOTO 20610 _
  1114.          ELSE GOSUB 21895 : _
  1115.               GOTO 21700
  1116.       IF ZWasEL = 20620 THEN _
  1117.          GOTO 20670
  1118.       IF ZWasEL = 20650 THEN _
  1119.          GOTO 20670
  1120.       IF ZWasEL = 20736 AND ZErrCode = 53 THEN _
  1121.          GOTO 21700
  1122. * REPLACING old line(s) by new
  1123. 63320 ' $SUBTITLE: 'ShellExit - sub to shell out from RBBS'
  1124. ' $PAGE
  1125. '
  1126. '  NAME    -- ShellExit
  1127. '
  1128. '  INPUTS  -- ShellTem$     String to invoke shell with
  1129. '
  1130. '  OUTPUTS -- none
  1131. '
  1132. '  PURPOSE -- Delay so that strings can finish printing.  Restore comm
  1133. '             port on return
  1134. '
  1135.       SUB ShellExit (ShellTem$) STATIC
  1136. * ------[ first line different ]------
  1137.       CALL DelayTime (4 + ZBPS)   'Pe 08/12/91
  1138.       IF NOT ZLocalUser THEN _
  1139.          IF ZFossil THEN _
  1140.             CALL FOSExit(ZComPort) _
  1141.          ELSE CLOSE 3 : _
  1142.               OUT ZModemCntlReg,INP(ZModemCntlReg) OR 1
  1143.       CLOSE 2
  1144.       CALL MetaGSR (ShellTem$,ZFalse)
  1145.       SHELL ShellTem$
  1146.       IF ZFossil THEN _
  1147.          IF NOT ZLocalUser THEN _
  1148.             CALL FOSinit(ZComPort,Result) : _
  1149.             IF Result = -1 THEN _
  1150.                CALL PScrn("ERROR INIT FOSSIL AFT EXTERNAL") : _
  1151.                SYSTEM
  1152.       CALL DelayTime (2)
  1153.       CALL RestoreCom
  1154.       END SUB
  1155. * REPLACING old line(s) by new
  1156. 63397 IF EOF(6) THEN _         ' Read next line in macro
  1157. * ------[ first line different ]------
  1158.               ZMacroActive = ZFalse _
  1159.       ELSE CALL ReadDir (6,1) : _
  1160.            ZMacroActive = (ZErrCode = 0)
  1161.       RETURN
  1162. * REPLACING old line(s) by new
  1163. 63400 ' $SUBTITLE: 'LockAppend - prepares for file append'
  1164. ' $PAGE
  1165. '
  1166. '  NAME    -- LockAppend
  1167. '
  1168. '  INPUTS  -- ZWasEN$            Name of file to append to
  1169. '
  1170. '  OUTPUTS -- none
  1171. '
  1172. '  PURPOSE -- Locks and opens file to append to
  1173. '
  1174.       SUB LockAppend STATIC
  1175. * ------[ first line different ]------
  1176. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1177.       WasBX = &H4 : _            'Pe 03/16/92
  1178.       ZSubParm = 9 : _           'Pe 03/16/92
  1179.       CALL FileLock
  1180.       ZErrCode = 0
  1181.       CALL OpenWorkA (ZWasEN$)
  1182.       END SUB
  1183. * REPLACING old line(s) by new
  1184. 63410 ' $SUBTITLE: 'UnLockAppend - cleans up after file append'
  1185. ' $PAGE
  1186. '
  1187. '  NAME    -- UnLockAppend
  1188. '
  1189. '  INPUTS  -- none
  1190. '
  1191. '  OUTPUTS -- none
  1192. '
  1193. '  PURPOSE -- Unlocks and close file appending to
  1194. '
  1195.       SUB UnLockAppend STATIC
  1196. * ------[ first line different ]------
  1197. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1198.       WasBX = &H4 : _            'Pe 03/16/92
  1199.       ZSubParm = 10 : _          'Pe 03/16/92
  1200.       CALL FileLock
  1201.       CLOSE 2
  1202.       END SUB
  1203. * REPLACING old line(s) by new
  1204. 63465 ' Forces a keyboard pause inside a macro
  1205.       SUB PauseExit STATIC
  1206.       ZSubParm = 4
  1207.       ZTurboKey = -ZTurboKeyUser
  1208. * ------[ first line different ]------
  1209.       ZOutTxt$ = ZMorePrompt$ + LEFT$(">",-1*ZExpertUser) + MID$("? : ",2*ZTurboKey+1,2) ' TC041610
  1210.       ZForceKeyboard = ZTrue
  1211.       ZNoAdvance = ZTrue
  1212.       CALL TPut
  1213.       ZLinesPrinted = 0
  1214.       ZUserIn$ = ""
  1215.       END SUB
  1216. * REPLACING old line(s) by new
  1217. 63470 ' $SUBTITLE: 'SetPrompt - sub to set prompts based on user security'
  1218. ' $PAGE
  1219. '
  1220. '  NAME    -- SetPrompt
  1221. '
  1222. '  INPUTS  -- PARAMETER           MEANING
  1223. '             ZBegMain          POSITION START OF MAIN CMDS
  1224. '             ZBegFile          POSITION START OF FILE CMDS
  1225. '             ZBegUtil          POSITION START OF UTIL CMDS
  1226. '             ZBegLibrary       POSITION START OF Library CMDS
  1227. '
  1228. '  OUTPUTS -- PRESENT.OPTS$         DISPLAY WHAT USER CAN DO (1st)
  1229. '             CALLERS.OPTS$         DISPLAY WHAT USER CAN DO (2nd)
  1230. '             ZMainOpts$            MAIN OPTS USER CAN DO
  1231. '             ZFileOpts$            FILE OPTS USER CAN DO
  1232. '             ZUtilOpts$            UTIL OPTS USER CAN DO
  1233. '             ZLibOpts$         Library OPTS USER CAN DO
  1234. '
  1235. '  PURPOSE -- Sets command line display of what user can do by
  1236. '             section and display of what all user can do
  1237. '
  1238.       SUB SetPrompt STATIC
  1239.       First = ZBegMain
  1240.       Last = ZBegFile - 1
  1241.       CALL SetOpts (ZMainOpts$,ZInvalidMainOpts$,First,Last)
  1242.       First = ZBegFile
  1243.       Last = ZBegUtil - 1
  1244.       CALL SetOpts (ZFileOpts$,ZInvalidFileOpts$,First,Last)
  1245.       First = ZBegUtil
  1246.       Last = ZBegLibrary - 1
  1247.       CALL SetOpts (ZUtilOpts$,ZInvalidUtilOpts$,First,Last)
  1248.       First = ZBegLibrary
  1249.       Last = ZBegLibrary + 6
  1250.       CALL SetOpts (ZLibOpts$,ZInvalidLibraryOpts$,First,Last)
  1251.       First = 50
  1252.       Last = 56
  1253.       CALL SetOpts (SysOpt$,ZInvalidSysOpts$,First,Last)
  1254.       First = 46
  1255.       Last = 49
  1256.       CALL SetOpts (GlobalOpts$,InvalidGlobalOpts$,First,Last)
  1257.       IF LEN(SysOpt$) > 0 THEN _
  1258.          ZSystemOpts$ = "Sysop: " + _
  1259.                         SysOpt$
  1260.       ZMainOpts$ = GlobalOpts$ + ZMainOpts$ + _
  1261.                    MID$(ZAllOpts$,INSTR(ZOrigCommands$,"G"),1)
  1262.       ZFileOpts$ = GlobalOpts$ + _
  1263.                    ZFileOpts$
  1264.       ZUtilOpts$ = GlobalOpts$ + _
  1265.                    ZUtilOpts$
  1266.       ZLibOpts$ = GlobalOpts$ + _
  1267.                       ZLibOpts$
  1268.       CALL SortString (SysOpt$)
  1269.       CALL SortString (ZMainOpts$)
  1270.       ZMainOpts$ = ZMainOpts$ + _
  1271.                    SysOpt$
  1272.       CALL SortString (ZFileOpts$)
  1273.       CALL SortString (ZUtilOpts$)
  1274.       CALL SortString (ZLibOpts$)
  1275.       CALL AddCommas (ZMainOpts$)
  1276.       CALL AddCommas (ZFileOpts$)
  1277.       CALL AddCommas (ZUtilOpts$)
  1278.       CALL AddCommas (ZLibOpts$)
  1279.       ZDirPrompt$ = "What directory(s) (" + _
  1280. * ------[ first line different ]------
  1281.          MID$("U)pload,A)ll,P)ers,L)ist,E)xtra,[Q]uit)",8 * (ZUserSecLevel => ZMinSecToView) + 9)
  1282.       ZQuitPromptExpert$ = "QUIT C,S, or to F,[M],U"
  1283.       ZQuitPromptNovice$ = "QUIT C)onference, S)ession or to section " + _
  1284.                             "F)ile, [M]ain, U)til"
  1285.       ZQuitList$ = "FMUS@C"
  1286.       IF ZUserSecLevel < ZOptSec(18) THEN _
  1287.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,23) : _
  1288.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,61) : _
  1289.          MID$(ZQuitList$,5) = " "
  1290.       IF ZUserSecLevel < ZOptSec(15) THEN _
  1291.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,22) + _
  1292.                                MID$(ZQuitPromptExpert$,25) : _
  1293.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,56) + _
  1294.                                MID$(ZQuitPromptNovice$,63) : _
  1295.          MID$(ZQuitList$,3,1) = " "
  1296.       IF ZUserSecLevel < ZOptSec(6) THEN _
  1297.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,16) + _
  1298.                                MID$(ZQuitPromptExpert$,19) : _
  1299.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,41) + _
  1300.                                MID$(ZQuitPromptNovice$,49) : _
  1301.          MID$(ZQuitList$,1,1) = " "
  1302.       CALL SetSection
  1303.       END SUB
  1304. * REPLACING old line(s) by new
  1305. 63540 ' Match Name to one in message file
  1306.       SUB ChkMsgName (MsgFromCaller,MsgToCaller) STATIC
  1307. * ------[ first line different ]------
  1308.      IF ZNewUserDGS THEN _                                        'DGS-NEW
  1309.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,6,MsgFromCaller) : _      'DGS-NEW
  1310.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,37,MsgToCaller) : _       'DGS-NEW
  1311.      Exit Sub
  1312.       IF NOT ZRemoteSysop THEN _
  1313.          WasX$ = LEFT$("SYSOP",-5*ZSysop) : _
  1314.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,6,MsgFromCaller) : _ 'Dgs-ALSMod
  1315.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,37,MsgToCaller)  : _    'Dgs-ALSMod
  1316.          EXIT SUB
  1317.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,6,MsgFromCaller)
  1318.       IF NOT MsgFromCaller THEN _
  1319.          CALL MsgNameMatch (ZOrigUserName$,"",6,MsgFromCaller)
  1320.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,37,MsgToCaller)
  1321.       IF NOT MsgToCaller THEN _
  1322.          CALL MsgNameMatch (ZOrigUserName$,"",37,MsgToCaller)
  1323.       END SUB
  1324.       SUB MsgNameMatch (PrimeName$,AltName$,SearchPos,Found) STATIC
  1325.       WasX$ = LEFT$(PrimeName$+"  ",22-8*(SearchPos < 7))
  1326.       GOSUB 63542
  1327.       IF Found OR AltName$ = "" THEN _
  1328.          EXIT SUB
  1329.       WasX$ = LEFT$(AltName$ + "  ",22-8*(SearchPos < 7))
  1330.       GOSUB 63542
  1331.       EXIT SUB
  1332. * REPLACING old line(s) by new
  1333. 63542 WasY$ = MID$(ZMsgRec$,SearchPos,LEN(WasX$))
  1334. * ------[ first line different ]------
  1335.       CALL SmartText(WasY$,ZFalse, OverStrike)        'SM091908
  1336.       CALL AllCaps(WasY$)                'SM091908
  1337.       WasY$ = LEFT$(WasY$,LEN(WasX$))            'SM091908
  1338.       ZWasDF = INSTR(WasY$,"@")
  1339.       IF ZWasDF > 0 THEN _
  1340.          MID$(WasY$,ZWasDF) = "      "
  1341.       Found = (WasY$ = WasX$)
  1342.       RETURN
  1343.       END SUB
  1344. * REPLACING old line(s) by new
  1345. 63625 ' * Sets SysOp security variables Formerly 5370 of rbbs-pc.bas
  1346.       ' * Returns ZWasA true when remote or global sysop
  1347.       SUB SetSysOp STATIC
  1348.       ZRemoteSysop = ((ZActiveUserName$ = ZSecretName$) OR _
  1349. * ------[ first line different ]------
  1350.                       (ZOrigUserName$ = ZSecretName$)) _
  1351.       OR _
  1352.       (ZActivUserName$ ="SYSOP")     'LK 12/05/91
  1353.       ZWasA = ZRemoteSysop
  1354.       ZGlobalSysop = (ZGlobalSysop OR (ZWasA AND ZOrigCnfg$ = ZConfigFileName$))
  1355.       IF ZGlobalSysop THEN _
  1356.          ZWasA = ZTrue
  1357.       END SUB
  1358. * REPLACING old line(s) by new
  1359. 63630 ' * Sets the user preferences based on user record.
  1360.       ' * Formerly in RBBS-PC.BAS
  1361.       SUB SetUserPref STATIC
  1362.       IF ZWasA THEN _
  1363.          ZUserSecLevel = ZSysopSecLevel _
  1364.       ELSE ZUserSecLevel = CVI(ZSecLevel$)
  1365.       ZBankTime = ASC(ZBankTime$)
  1366.       ZLastMsgRead = CVI(MID$(ZUserOption$,3,2))
  1367.       ZUserXferDefault$ = MID$(ZUserOption$,5,1)
  1368.       IF ZUserXferDefault$ = " " THEN _
  1369.          ZUserXferDefault$ = "N"
  1370.       CALL XferType (2,ZTrue)
  1371.       WasX = ASC(MID$(ZUserOption$,6,1))
  1372.       ZWasGR = (WasX MOD 3)
  1373.       ZBoldText$ = CHR$(48 - (WasX > 50))
  1374.       ZUserTextColor = (WasX - ZWasGR)/3 + 21
  1375.       IF ZUserTextColor > 37 THEN _
  1376.          ZUserTextColor = ZUserTextColor - 7
  1377.       IF ZEmphasizeOff$ <> "" THEN _
  1378.          CALL QuickTPut (ZColorReset$,0)
  1379.       IF ZEmphasizeOnDef$ <> "" THEN _
  1380.          ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m" _
  1381.       ELSE ZEmphasizeOff$ = ""
  1382.       IF ZWasGR = 1 AND NOT ZEightBit THEN _
  1383.          ZWasGR = 0
  1384.       CALL SetGraphic (ZWasGR)
  1385.       ZRightMargin = CVI(MID$(ZUserOption$,7,2))
  1386.       IF ZRightMargin > 72 THEN _
  1387.          ZRightMargin = 72
  1388. * ------[ first line different ]------
  1389.            IF NOT ZConfMode THEN _
  1390.          ZWasCI$ = ZCityState$ : _
  1391.       CALL Trim (ZWasCI$)
  1392.       UserOptions = CVI(MID$(ZUserOption$,9,2))
  1393.       ZPromptBell = (UserOptions AND 1) > 0
  1394.       ZExpertUser = (UserOptions AND 2) > 0
  1395.       CALL SetExpert
  1396.       ZNulls = (UserOptions AND 4) > 0
  1397.       ZUpperCase = (UserOptions AND 8) > 0
  1398.       ZLineFeeds = (UserOptions AND 16) > 0
  1399.       ZCheckBulletLogon = (UserOptions AND 32) > 0
  1400.       ZSkipFilesLogon = (UserOptions AND 64) > 0
  1401.       ZFullScreenEditor = (UserOptions AND 128) > 0    'Pe 09/02/91
  1402.       ZReqQuesAnswered = (UserOptions AND 256) > 0
  1403.       ZMailWaiting = (UserOptions AND 512) > 0
  1404.       WasX = (UserOptions AND 1024 ) > 0
  1405.       CALL SetHiLite (NOT WasX)
  1406.       IF NOT ZHiLiteOff THEN _
  1407.          CALL QuickTPut (ZEmphasizeOff$,0)
  1408.       ZTurboKeyUser = (UserOptions AND 2048) > 0
  1409.       ZTurboKey = ZFalse
  1410.       ZFileWaiting = (UserOptions AND 4096) > 0
  1411.       CALL SetRegDisplay
  1412.       ZPageLength = ASC(MID$(ZUserOption$,13,1))
  1413.       IF ZSubBoard THEN _
  1414.          GOTO 63632
  1415.       WasX$ = ZEchoer$
  1416.       ZEchoer$ = MID$(ZUserOption$,14,1)
  1417.       IF INSTR("ICR",ZEchoer$) = 0 THEN _
  1418.          ZEchoer$ = "R"
  1419.       IF WasX$ <> ZEchoer$ THEN _
  1420.          CALL ReportEcho
  1421.       CALL SetEcho (ZEchoer$)
  1422. * REPLACING old line(s) by new
  1423. 63640 ' * Welcomes caller on
  1424.       SUB SayWelcome STATIC
  1425.       LOCATE 24,1
  1426.       CALL AMorPM
  1427.       ZUserLogonTime! = TIMER
  1428.       ZTimeLoggedOn$ = TIME$
  1429.       ZLinesPrinted = 0
  1430.       ZExpertUser = ZFalse
  1431.       CALL SetExpert
  1432.       ZOutTxt$ = ""
  1433.       IF ZMaxNodes > 1 THEN _
  1434.          ZOutTxt$ = " - Node " + ZNodeID$
  1435.       IF ZReliableMode THEN _
  1436.          ZOutTxt$ = ZOutTxt$ + " (Reliable)"
  1437. * ------[ first line different ]------
  1438. '      CALL QuickTPut1 ("Welcome to " + ZRBBSName$ + ZOutTxt$)  'Pe 06/26/92
  1439.       CALL TestANSI
  1440.       ZTestParity = ZTrue
  1441.       ZStopInterrupts = ZTrue
  1442.       ZFileName$ = ZPreLog$
  1443.       CALL FlushCom (WasX$)
  1444.       ZCommPortStack$ = ""
  1445.       END SUB
  1446. * REPLACING old line(s) by new
  1447. 63656 CALL GetPassword
  1448.       IF ZErrCode <> 0 THEN _
  1449.          CALL UpdtCalr (ZPswdFile$ + " bad format!",2) : _
  1450.          GOTO 63659
  1451.       IF MatchPass THEN _
  1452.          ZTempPassword$ = LEFT$(ZTempPassword$ + SPACE$(15),15) : _
  1453.          IF MatchPass$ <> ZTempPassword$ THEN _
  1454.             GOTO 63654 _
  1455.          ELSE IF ZUserSecLevel >= ZMinSecForTempPswd THEN _
  1456.                  GOTO 63658 _
  1457.               ELSE GOTO 63654
  1458. * ------[ first line different ]------
  1459.    IF ZUserSecLevel <> ZTempSecLevel OR ZTempPassword$ <> "" THEN _
  1460.          GOTO 63654
  1461.       IF ZStartTime = 0 THEN _
  1462.          GOTO 63658
  1463.       WorkTime$ = TIME$
  1464.       TestTime = VAL(LEFT$(WorkTime$,2) + MID$(WorkTime$,4,2))
  1465.       IF TestTime => ZStartTime AND TestTime <= ZEndTime THEN _
  1466.          GOTO 63658
  1467.       IF ZEndTime < ZStartTime THEN _
  1468.          IF TestTime => ZStartTime OR TestTime <= ZEndTime THEN _
  1469.             GOTO 63658
  1470.       GOTO 63654
  1471. * REPLACING old line(s) by new
  1472. 63675 SUB SetUserUpDn STATIC
  1473.       ZDnlds = CVI(ZUserDnlds$)
  1474.       ZUplds = CVI(ZUserUplds$)
  1475.       ZBankTime = ASC(ZBankTime$)
  1476.       IF ZEnforceRatios THEN _
  1477.          ZDLToday! = CVS(ZTodayDl$) : _
  1478.          ZBytesToday! = CVS(ZTodayBytes$) : _
  1479.          ZDLBytes! = CVS(ZDlBytes$) : _
  1480.          ZULBytes! = CVS(ZULBytes$)
  1481.       END SUB
  1482.       SUB SetGlobalUpDn STATIC
  1483.       IF NOT ZGlobalsSet THEN _
  1484.          ZGlobalsSet = ZTrue : _
  1485.          ZGlobalDnlds = ZDnlds : _
  1486.          ZGlobalUplds = ZUplds : _
  1487.          ZGlobalDLToday! = ZDLToday! : _
  1488.          ZGlobalBytesToday! = ZBytesToday! : _
  1489.          ZGlobalDLBytes! = ZDLBytes! : _
  1490.          ZGlobalULBytes! = ZULBytes! : _
  1491.          ZGlobalBankTime = ZBankTime
  1492.       END SUB
  1493. * ------[ first line different ]------
  1494. '
  1495. * REPLACING old line(s) by new
  1496. 63700 ' $SUBTITLE: 'TestANSI - test caller for ANSI support'
  1497. ' $PAGE
  1498. '
  1499. '  NAME    -- TestANSI
  1500. '                                  MEANING
  1501. '  INPUTS  -- ZTestANSITime   # of seconds to wait for ANSI response
  1502. '                             0 = do not test for ANSI
  1503. '
  1504. * ------[ first line different ]------
  1505. '  OUTPUTS -- ZANSITest       = ZTrue if ANSI detected               ' DD062801/ANSICHAT
  1506. '
  1507. '  PURPOSE -- Test callers' software for support of ANSI graphics
  1508. '
  1509.       SUB TestANSI STATIC
  1510.       IF ZTestANSITime < 1 THEN _
  1511.          GOTO 63705
  1512.       IF ZLocalUser THEN _
  1513.          IF ZDOSAnsi THEN _
  1514.             GOTO 63710 _
  1515.          ELSE GOTO 63705
  1516.       CALL QuickTPut1 ("Testing For ANSI support..."+ZCrLf$)  'Pe 09/26/91
  1517.       CALL FlushCom(Temp$)
  1518.       CALL PutCom (ZEscape$ + "[6n")
  1519.       CALL DelayTime(ZTestANSITime)
  1520.       CALL WipeLine (5)
  1521.       CALL FlushCom(Temp$)
  1522.       CALL WipeLine (5)
  1523.       Temp = INSTR(Temp$,ZEscape$ + "[")
  1524.       IF Temp > 0 THEN _
  1525.          Temp = INSTR(Temp,Temp$,"R") : _
  1526.          IF TEMP > 0 AND TEMP < 9 THEN _
  1527.             GOTO 63710
  1528. * REPLACING old line(s) by new
  1529. 63710 CALL SetGraphic(2)
  1530.       ZHiLiteOff = ZFalse
  1531. * ------[ first line different ]------
  1532.      CALL QuickTPut1 ("*ANSI Color  Detected*")
  1533.       ZANSITest = ZTrue                                              ' DD062801/ANSICHAT
  1534.       END SUB
  1535. * REPLACING old line(s) by new
  1536. 63720 SUB AraAllCaps (Ara$(1),WhichElement) STATIC
  1537.       Temp$ = Ara$(WhichElement)
  1538.       CALL AllCaps (Temp$)
  1539.       Ara$(WhichElement) = Temp$
  1540.       END SUB
  1541. * ------[ first line different ]------
  1542. '
  1543. '******************** INSERTED AutoLogoff here ******************
  1544. '
  1545. ' $SUBTITLE: 'AutoLogOff - Subroutine to  to log off after transfer'
  1546. ' $PAGE
  1547. '
  1548.   SUB AutoLogOff STATIC
  1549.  ZAutoEnd = 0
  1550.  ZAbort = ZFalse    'Pe 01/19/92
  1551.   IF ZGetExtDesc = ZTrue or ZOK = ZFalse or ZAutoLogOffReq = ZTrue THEN _
  1552.     EXIT SUB
  1553.  ZSubParm = 1
  1554. ZStackC = ZTrue    'Pe 12/21/91
  1555. * INSERTING new line(s)
  1556. 64989  ZStopInterrupts = ZTrue   'Pe 04/17/92
  1557. CALL BufFile(ZHelpPath$+"AUTOOFF.MNU",X)     ' MO 04/13/92
  1558. '      ZOutTxt$ = " C)ontinue with transfer " + ZCrLf$ + _
  1559. '                 " A)bort transfer - Cancel"+ ZCrLf$ + _
  1560. '                 " G)o ahead LOG-OFF after Transfer " + ZCrLf$ + _
  1561. '                 ZCrLf$ + "Press [Enter] to continue or select (C,A,G)->"
  1562. ZStopInterrupts = ZFalse    'Pe 04/17/92
  1563. ZOutTxt$ = "Select ([C],A,G) "
  1564.         ZTurboKey = -ZTurboKeyUser
  1565.       ZSubParm = 1
  1566.       Call TGet
  1567.       CALL AllCaps (ZUserIn$)
  1568.       WasMplx = INSTR("CAG",ZUserIn$)
  1569.       CALL Carrier                      'Pe 03/06/92
  1570.       IF ZSubParm = -1 THEN _           'Pe 03/06/92
  1571.       ZFileSysParm = 7 : _              'Pe 03/06/92
  1572.       EXIT SUB                          'Pe 03/06/92
  1573. IF ZUserIn$ = "" or ZUserIn$ = " " Then _
  1574.       GOTO 64995
  1575.    ON WasMplx GOTO 64995,64990,64998
  1576.       GOTO 64989
  1577. 64990 ZAutoEnd = 2
  1578.       Call Skipline (2)
  1579.       EXIT SUB
  1580. 64995 ZAutoEnd = 3
  1581.       Call Skipline (2)
  1582.       EXIT SUB
  1583. 64998 ZAutoEnd = 1
  1584.       Call SkipLine (2)
  1585.       END SUB
  1586. '
  1587. ' ****  S - COMMAND FROM UTILITY MENU (STATISTICS)  ***  'Pe 09/02/91
  1588. '
  1589. SUB Statistics (CallsToDate!,ActiveMessages,HighMsgNumber,HighestMsgRecord,CurUserCount,MaxMsgs) STATIC
  1590.       ActionFlag = ZTrue
  1591.       IF ZActiveMessageFile$ = ZPrevBase$ THEN _
  1592.         ActionFlag = ZFalse
  1593.      CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$)
  1594.      ZOutTxt$ = ""
  1595.      IF NOT ZConfMode THEN _
  1596.            ZOutTxt$ = "Caller Number................"+STR$(CallsToDate!) + "  "+ZCrLf$
  1597. ZOutTxt$ = ZOutTxt$ + "Active Messages.............."+STR$(ActiveMessages)+ZCrLf$
  1598. ZOutTxt$ = ZOutTxt$ + "Next Msg Number.............."+STR$(HighMsgNumber + 1)+ZCrLf$
  1599.      IF ZLastMsgRead > 0 THEN _
  1600.      ZOutTxt$ = ZOutTxt$ + "Last msg you read............" + STR$(ZLastMsgRead)+ZCrLf$ _
  1601.      ELSE ZOutTxt$ = ZOutTxt$ + "You Have NOT Read Any Messages Yet !" +ZCrLf$ : _
  1602.      ZNewUserDgs = Ztrue
  1603.      ZSubParm = 2
  1604.      CALL TPut
  1605. IF ZSubParm < 0 THEN _
  1606.          EXIT SUB
  1607.     ZWasZ$ = ZUpldDriveFile$
  1608.      CALL FindFree
  1609.      CALL QuickTPut1 ("Upload disk has" + ZFreeSpace$)
  1610.      CALL QuickTPut1 ( "Free String Space = "+  (STR$(CINT(FRE("A"))) + " bytes")) 'Pe 01/01/92
  1611.      CALL QuickTPut1 ( "StackSpace = "+  (STR$(CINT(FRE(-2))) + " bytes")) 'Pe 05/10/92
  1612.      IF (NOT ZSysop) AND (ZUserSecLevel < ZSecKillAny) THEN _
  1613.       CALL Delaytime (2) : _
  1614.         EXIT SUB
  1615.      UserWork = (ZHighestUserRecord * .95) + 1
  1616.      IF ZMsgsCanGrow THEN _
  1617.         ZWasY$ = " open" _
  1618.      ELSE ZWasY$ = STR$(HighestMsgRecord + 1 - ZMaxNodes - ZNextMsgRec)
  1619.      ZOutTxt$ = "USERS: used" + _
  1620.           STR$(CurUserCount - 1) + _
  1621.           " avl" + _
  1622.           STR$(UserWork - CurUserCount) + _
  1623.           "  MSGS: used" + _
  1624.           STR$(ActiveMessages) + _
  1625.           " avl" + _
  1626.           STR$(MaxMsgs - ActiveMessages) + _
  1627.           "  MSG REC: used" + _
  1628.           STR$(ZNextMsgRec - 1) + _
  1629.           " avl" + ZWasY$
  1630.      ZSubParm = 2
  1631.      CALL TPut
  1632. IF ZSubParm < 0 THEN _
  1633.    EXIT SUB
  1634. CALL DelayTime (2)
  1635. END SUB
  1636. '********************************************************************
  1637. '
  1638. SUB ShowUsrProfile STATIC
  1639.  CALL QuickTPut (CHR$(12),0) ' to clear screen
  1640. WasX$ =  "USER NAME : " + ZActiveUserName$ + ZCrLF$ + _
  1641.          "SECURITY  :" + STR$(ZUserSecSave) + ZCrLf$ + _
  1642.          "PASSWORD  : " + ZPswdSave$ + ZCrLF$ + _
  1643.          "READ MSG. :" + STR$(ZLastMsgRead)
  1644. Call QuickTput1 (WasX$)
  1645. WasX$ =  "TIMES ON  :" + STR$(ZTimesLoggedOn) +ZCrLF$ + _
  1646.          "Last ON   : " + ZLastDateTimeOnSave$ +ZCRLF$ + _
  1647.          "DownLoads :" + STR$(ZDnlds) + ZCrLF$ 
  1648. Call QuickTput1 (WasX$)
  1649. WasX$ =  "Uploads   :" + STR$(ZUplds)+ ZCrLf$ + _                'Pe 06/01/92
  1650.          "Baud Rate : " + ZCBaud$ + " Bps"                       'Pe 06/01/92
  1651. Call QuickTPut1 (WasX$)
  1652. WasX$ = "Dl-Bytes  :" + STR$(ZDLBytes!)+ZCrLF$ + _
  1653.         "Ul-Bytes  :" + STR$(ZULBytes!) +ZCrLF$ 
  1654. Call QuickTput1 (WasX$)
  1655. WasX$ = "User mode : " + MID$("NoviceExpert",1 -6 * ZExpertUser,6) +ZCrLf$ +_
  1656.         "Graphics  : " + MID$("None AsciiColor",GR * 5 + 1,5)
  1657. Call QuickTput1 (WasX$)
  1658. WasX$ = "Protocol  : " + ZUserXferDefault$ + ZCrLF$ + _
  1659.         "Upper Case: " + MID$("and lowerONLY", 1 - 9 * ZUpperCase,9)+ZCrLf$ + _
  1660.         "Line Feeds: " + FNOFFON$(ZLineFeeds) +ZCrLf$ + _
  1661.         "Nulls     : " + FNOFFON$(ZNulls)
  1662. Call QuickTPut1 (WasX$)
  1663.       IF ZRestrictByDate THEN _
  1664.      CALL QuickTPut ("EXPIRATION: " + ZExpirationDate$,1)
  1665.      CALL Toggle (-8)
  1666.      CALL Toggle (-5)
  1667.      CALL Toggle (-10)
  1668.      CALL Toggle (-2)
  1669.      CALL Toggle (-4)
  1670.      CALL Toggle (-1)
  1671. CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  1672. END SUB
  1673. '********************************************************************
  1674. '
  1675. SUB BatchUpload (ZDesc$,ZUCat$,WasFF) STATIC
  1676. On WasFF GOTO 69000, 69500
  1677. 69000    CALL OpenWorkA ("BatchUp" +ZNodeID$ +".LST")
  1678.          Call PrintWorkA (ZFileName$)
  1679.          CALL PrintWorkA (ZFileNameHold$)
  1680.          CALL PrintWorkA (ZDesc$)
  1681.          CALL PrintWorkA (ZUcat$)
  1682.         Close 2
  1683.      CALL OpenWorkA (ZBatchWorkFile$) 
  1684.        CALL PrintWorkA (ZFileName$)
  1685.      Close 2
  1686. IF ZAnsindex = ZLastIndex THEN 
  1687.       ZUpBatchTransfer = ZFalse
  1688.       ZWasBatchTransfer = ZTrue
  1689.   End IF
  1690. Exit Sub
  1691. '
  1692. '
  1693. 69500 CALL KillWork (ZBatchWorkFile$)
  1694.       ZErrCode = 0
  1695.     Temp$ = "BatchUp" + ZNodeid$ + ".LST"
  1696.       CALL OpenWork (8,Temp$)
  1697.          While Not EOF(8)
  1698.        Line Input #8,ZFileName$
  1699.        Line Input #8,ZFileNameHold$
  1700.        Line Input #8,ZDesc$
  1701.        Line Input #8,ZUCat$
  1702.         Call Findit (ZFileName$)
  1703.     IF ZOK THEN _
  1704.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) _
  1705.         Else CALL UpdtCalr (ZFileNameHold$ + " ABORTED during BatchUL",2) 
  1706.           ZWasBatchTransfer = ZFalse                  'Pe 09/12/91
  1707.          ZAlreadyGiven = ZTrue
  1708.        Wend
  1709.      Close 8
  1710. End Sub
  1711.  
  1712. 69600 ' $SUBTITLE: 'BATCHIT - subroutine to list files for batch downloading'
  1713. ' $PAGE
  1714. '
  1715.  SUB BATCHIT STATIC
  1716.       CALL PutCom (CHR$(7))
  1717.       CALL QuickTPUT ("Enter filenames on Separate lines! (EMPTY LINE ENDS )",1)
  1718.        ZWasB=1
  1719.        FOR BatchF = 2 TO 25
  1720.         ZOutTxt$ = "Name of file #" + STR$(Batchf-1)
  1721.         Call TGet
  1722.          IF ZUserIn$ = "" THEN GOTO 70415
  1723.           ZUserIn$(BatchF) = ZUserIn$
  1724.           ZAnsIndex = BatchF+1
  1725.         NEXT BatchF
  1726. 70415 BatchF =  BatchF-1
  1727.       ZLastIndex = BatchF
  1728.         End Sub
  1729. '
  1730. ' $SUBTITLE: 'TStat --- Display Transfer Stats from Xfer-? file'
  1731. ' $PAGE
  1732. '
  1733.       SUB TStats STATIC                                              ' MplXfer
  1734.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")                  ' MplXfer
  1735.       IF ZErrCode <> 0 THEN _
  1736.        Exit Sub                                                    'Pe 06/01/92
  1737.       CALL SkipLine (2)                                              ' MplXfer
  1738.       CALL QuickTPut1 (ZFG2$ + " Transfer Stats on this file were as Follows..." + ZCrLF$) ' MplXfer
  1739.       CALL QuickTPut1 (ZFG4$ + " FileName      Bytes  Dtr Rate    CPS      Errors " + ZCrLf$ + _ ' MplXfer
  1740.            ZFG3$ + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ZEmphasizeOff$) ' MplXfer
  1741.       WHILE NOT EOF(2)                                               ' MplXfer
  1742.         LINE INPUT #2,Stat$                                          ' MplXfer
  1743.         WasS = INSTR(Stat$,"rs ")                                    ' MplXfer
  1744.         IF WasS > 0 THEN _                                           ' MplXfer
  1745.            WasX$ = MID$(Stat$, 2, WasS)                              ' MplXfer
  1746.         Match = INSTR(Stat$, ".")                                    ' MplXfer
  1747.         IF Match > 0 THEN _                                          ' MplXfer
  1748.            WasZyX$ = MID$(Stat$, Match - 8, 12)                      ' MplXfer
  1749.         Match = 0                                                    ' MplXfer
  1750.         Start = 1                                                    ' MplXfer
  1751.         DO                                                           ' MplXfer
  1752.           Match = INSTR(Start, WasZyX$, "\")                         ' MplXfer
  1753.           IF Match > 0 THEN _                                        ' MplXfer
  1754.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  1755.         LOOP WHILE Match                                             ' MplXfer
  1756.         Match = 0                                                    ' MplXfer
  1757.         Start = 1                                                    ' MplXfer
  1758.         DO                                                           ' MplXfer
  1759.           Match = INSTR(Start, WasZyX$, " ")                         ' MplXfer
  1760.           IF Match > 0 THEN _                                        ' MplXfer
  1761.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  1762.         LOOP WHILE Match                                             ' MplXfer
  1763.         WasXy = LEN(WasZyX$)                                         ' MplXfer
  1764.  
  1765.       IF ZErrCode <> 0 THEN _
  1766.        Exit Sub                                                    'Pe 06/01/92
  1767.  
  1768.      CALL QuickTPut1 (ZFG1$ + WasZyX$ + SPACE$(15-WasXy) + WasX$ + ZEmphasizeOff$) ' MplXfer
  1769.       WEND                                                           ' MplXfer
  1770.       CALL SkipLine (1)                                              ' MplXfer
  1771.       CLOSE 2                                                        ' MplXfer
  1772.       CALL DelayTime (3)                                             ' MplXfer
  1773.       END SUB                                                        ' MplXfer
  1774. '
  1775. ' $SUBTITLE: 'ShowBull --- Intitial Welcom screen displayed'
  1776. ' $PAGE
  1777. '
  1778.  Sub ShowBull STATIC
  1779. 71525 CALL SkipLine (2)
  1780.      WasX$ = ZFG1$+"Review System Screens Available:" + ZCrLf$ + _
  1781.              ZFG4$+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  1782. Call QuickTPut (WasX$,2)
  1783.      WasX$ = ZFG2$+"P)relog Screen"+ZCrLf$ + _
  1784.              ZFG3$+"W)elcome Screen" + ZCrLf$ + _
  1785.              ZFG4$+"O)nline News Screens"
  1786. Call QuickTPut (WasX$,1)
  1787.     WasX$ = ZFG1$+"Y)our Access Level" +ZCrLf$ + _
  1788.             ZFG2$+"N)ew User Sign-On" + ZCrLf$ + _
  1789.                   "[Q]uit"+ZEmphasizeOff$
  1790. Call QuickTPut (WasX$,2)
  1791. ZOutTxt$ = "Please make a Selection (P,W,O,Y,N,[Q]) "
  1792.         GOSUB 72999                     'Pe 04/25/92
  1793.         CALL AllCaps (ZUserIn$)
  1794.         WasMplX = INSTR("PWOYNQ",ZUserIn$)
  1795.         IF ZUserIn$ = "" THEN _
  1796.            GOTO 71596
  1797.     ON WasMplX GOTO 71530,71533,71536,71539,71541,71596
  1798. 71530 ZFileName$ = ZPreLog$
  1799.      GOTO 71550
  1800. 71533 ZFileName$ = ZWelcomeFile$
  1801.      GOTO 71550  
  1802. 71536 ZFileName$ = ZNewsFileName$
  1803.      GOTO 71550
  1804. 71539 ZFileName$ = "LG" + _
  1805.                  UserSecLevel$ + _
  1806.                  ".DEF"                 'Pe 06/01/92
  1807.      GOTO 71550
  1808. 71541 ZFileName$ = ZNewUserFile$
  1809. 71550 GOSUB 71790
  1810.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  1811.      GOTO 71525
  1812. 71596 ZFileSysParm = 1
  1813.        Exit Sub
  1814. '
  1815. 71790 CALL Graphic (ZFileName$)
  1816.      CALL BufFile (ZFileName$,WasX)
  1817.      CALL Carrier
  1818.      IF ZSubParm = -1 THEN _
  1819.         ZFileSysParm = 7 : _
  1820.         Exit Sub
  1821.      RETURN
  1822.  
  1823. 72995 GOSUB 72997
  1824.       ZSubParm = 1
  1825. 72996 CALL TGet
  1826. 72997 IF ZSubParm < 0 THEN _
  1827.       ZFileSysParm = 7 :_
  1828.          Exit Sub
  1829.       RETURN
  1830. 72998 ZOutTxt$ = ZOutTxt$ + _
  1831.            ZPressEnter$
  1832.       GOTO 72995
  1833. 72999 ZTurboKey = -ZTurboKeyUser
  1834.       GOTO 72995
  1835. End Sub
  1836.